package com;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * List 元素的特点 有序可重复,存入顺序和取出顺序一致,并且可以有多个重复元素
 * 
 * ArrayList : 底层是数组,随机查询效率高,随机增删效率低
 * 
 * LinkedList : 底层是双向链表,随机查询效率低,随机增删效率高
 * 
 * ArrayList : 
 * 		默认初始化容量是 10 ,扩大容量是原始容量的 1.5倍
 * 		veator : 默认容量是 10 , 扩大容量是 2 倍
 * 		ArrayList 是 veator 的升级版,所以 vector 已经废弃
 * 		ArrayList 是非线程安全,执行效率高
 * 
 * @author lenovo
 * @Date 2020年7月16日
 * @Time 下午8:15:37
 */
public class Collection_05_List_01 {
	@Override
	public String toString() {
		return "===";
	}

	public static void main(String[] args) {
		List l1 = new ArrayList();
		l1.add(1);
		l1.add("张三");
		l1.add(new Collection_05_List_01());
		System.out.println(l1);
		// [1, 张三, ===] , 因为输出一个 list 的时候,结构是这样的[元素1 , 元素2 , ...]
		// 会调用集合中每个元素自身的 toSting()方法

		// get : 获取指定索引对应的元素,等于 数组[index]
		for (int i = 0; i < l1.size(); i++) {
			System.out.println(l1.get(i));
		}
//		1
//		张三
//		===

		// 把元素插入到指定位置,原位置数据和原位置之后的数据向后移动一位
		l1.add(1, "你好");
		for (Object object : l1) {
			System.out.println(object);
		}
//		1
//		你好
//		张三
//		===

		// 用指定的元素把指定位置上的元素替换
		l1.set(2, "Hello");
		Iterator it = l1.iterator();
		while (it.hasNext()) {
			Object object = it.next();
			System.out.println(object);
		}
//		1
//		你好
//		Hello
//		===
	}

}
